Loading...
 

Algorytm adaptacji siatek trójkątnych i czworościennych

W przypadku siatek trójkątnych lub czworościennych możliwe jest zagęszczanie siatek w celu zwiększenia dokładności aproksymacji funkcji rozpiętych na tych siatkach.
Algorytm zagęszczania siatek nazywa się algorytmem adaptacji. Musi on zostać skonstruowany w taki sposób, żeby nie zepsuć właściwości oryginalnej siatki, na przykład żeby elementy nie stawały się coraz bardziej "wydłużone" w wyniku adaptacji, co powodowało by zaburzenie proporcji między krawędziami siatki i możliwość wygenerowania długich cienkich elementów dla których policzenie całki dawało by bardzo małe liczby, rzędu 0.000001 lub mniej co z koleji powodowało by błedy numeryczne faktoryzacji układu równań metody elementów skończonych.
Algorytm adaptacji siatek trójkątnych zachowujący proporcje elementów zaproponowany został przez Marie Rivare [1].
Jest on opisany w pseudokodzie, oraz zilustrowany na rysunku


1 procedura ZŁAM (trójkąt t)

2 e = najdłuższa krawędź trójkąta t
3 jeśli e znajduje się na brzegu siatki wówczas złam t od połowy najdłuższej krawędzi do przeciwnego wierzchołka i wyjdź
4 t' = element po drugiej stronie krawędzi e
5 jeśli e!=e' wówczas ZŁAM(t')
6 t* = możliwie nowy element po drugiej stronie krawędzi e
7 złam t i t* od najdłuższej krawędzi do przeciwnego wierzchołka

Przykładowe zastosowanie algorytmu łamania elementów trójkątnych.
Rysunek 1: Przykładowe zastosowanie algorytmu łamania elementów trójkątnych.

Zgodnie z panelem (a) naszym celem jest złamanie elementu umieszczonego w lewym górnym rogu siatki. Wołamy więc procedure ZŁAM(t1). Algorytm znajduje najdłuższą krawędź e1 elementu, i identyfikuje jego najdłuższą krawędź (panel (b) zaznaczona na czerwono). Krawędź ta nie znajduje się na brzegu, więc wyciągamy element t2 po drugiej stronie krawędzi i znajdujemy jego najdłuższą krawędź e2 (panel (c) zaznaczona na niebiesko). Ponieważ krawędź e1 nie jest równa krawędzi e2, wołamy rekurencyjnie procedure ZŁAM(t2). Procedure znajduje najdłuższą krawędź elementu (panel (c) zaznaczona na niebiesko) i ponieważ nie jest ona zlokalizowana na brzegu sytuacje się powtarza: identyfikujemy element t3 po drugiej stronie i jego najdłuższą krawędź e3 (panel (d) zaznaczona na zielono). Ponieważ krawędź ta nie jest równa krawędzi niebieskiej, wołamy rekurencyjnie ZŁAM(t3). Najdłuższa krawędź elementu t3 to krawędź zielona e3, nie jest ona zlokalizowana na brzegu, i po jej drugiej stronie znajduje się element t4 (panel (e)) którego najdłuższa krawędź to również krawędź zielona e3. Łamiemy zatem elementy t3 i t4 od najdłuższej krawędzi do przeciwległego wierzchołka (panel (f)). Wracamy do poprzedniego wywołania procedury ZŁAM, z powrotem do elementu t2. Nowy element po drugiej stronie najdłuższej krawędzi e2 to element t4 (panel (g)). Łamiemy więc elementy t2 i t4 od najdłuższej krawędzi do wierzchołka znajdującego się naprzeciwko. Wracamy do poprzedniego wywołania procedury ZŁAM, z powrotem do elementu t1. Nowy element po drugiej stronie najdłuższej krawędzi e1 to element t5 (panel (i)). Łamiemy więc elementy t1 i t5 od najdłuższej krawędzi do wierzchołka znajdującego się naprzeciwko (panel (j)).

Ostatnio zmieniona Poniedziałek 13 z Kwiecień, 2020 15:19:26 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.